BaseProtocolServer

StockSharp.Server.Core

Classe base para servidores de protocolo (FIX, SBE, etc.). Contém infraestrutura compartilhada: ciclo de vida, sessões, assinaturas, canais de mensagens, tarefas de fundo.

Herda de: BaseLogReceiver

Implementa: IProtocolServer, ILogReceiver, ILogSource, IDisposable

Construtores

BaseProtocolServer
protected BaseProtocolServer(TSettings settings)
baseProtocolServer = BaseProtocolServer(settings)

Inicializa uma nova instância.

settings
Configuração do servidor.

Propriedades

LoginRateLimiter
protected LoginRateLimiter LoginRateLimiter { get; private set; }
value = baseProtocolServer.LoginRateLimiter
baseProtocolServer.LoginRateLimiter = value

Limitador de taxa para tentativas de login (compartilhado entre todos os ouvintes).

Sessions
public IEnumerable<IMessageListenerSession> Sessions { get; }
value = baseProtocolServer.Sessions

Sessões activas.

Settings
public TSettings Settings { get; }
value = baseProtocolServer.Settings

- Configuração.

State
public ChannelStates State { get; protected set; }
value = baseProtocolServer.State
baseProtocolServer.State = value

Obtém o armazenamento do estado subjacente.

Métodos

AddSubscription
public void AddSubscription(ServerSubscription subscription)
baseProtocolServer.AddSubscription(subscription)

Adicionar assinatura.

subscription
Assinatura.
ClearState
protected virtual void ClearState()
baseProtocolServer.ClearState()

Limpar todo o estado: ouvintes, sessões, assinaturas.

Convert
protected string Convert(string value)
result = baseProtocolServer.Convert(value)

Converter texto para latim se configurado.

CreateSubscription
protected abstract TSubscription CreateSubscription(TClientSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = baseProtocolServer.CreateSubscription(session, requestId, subscription, type)

Criar uma instância de informação de subscrição.

Disconnect
public void Disconnect(IMessageListenerSession session)
baseProtocolServer.Disconnect(session)

Desligar sessão.

session
Sessão.
DisposeManaged
protected override void DisposeManaged()
baseProtocolServer.DisposeManaged()

Libertar recursos.

EnqueueMessage
protected void EnqueueMessage(TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, requestId, handler, cancellationToken)

Coloque a mensagem em espera para uma sessão com o ID da solicitação.

EnqueueMessage
protected void EnqueueMessage(TSubscription subscription, TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, session, requestId, handler, cancellationToken)

Enqueue principal: agendar trabalho em uma sessão cliente.

EnqueueMessage
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)

Coloque a mensagem para vários assinantes.

EnqueueMessage
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)

Coloque a mensagem para vários assinantes (com resultado bool).

EnqueueMessage
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)

Enquear mensagem para uma assinatura única.

EnqueueMessage
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)

Coloque a mensagem para uma assinatura única (com resultado bool).

EnqueueMessage
protected void EnqueueMessage(TClientSession session, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, handler, cancellationToken)

Colocar a mensagem para uma sessão (sem pedido de ID).

GetSessionKey
protected abstract string GetSessionKey(TClientSession session)
result = baseProtocolServer.GetSessionKey(session)

Use a chave para agrupar as sessões de clientes (e.g. SenderCompId).

GetSubscriptions
public IEnumerable<ServerSubscription> GetSubscriptions(IMessageListenerSession session)
result = baseProtocolServer.GetSubscriptions(session)

Obter a subscrição da sessão especificada.

session
Sessão.

Retorna: Assinaturas.

HasSubscriptions
public bool HasSubscriptions(DataType dataType, SecurityId securityId)
result = baseProtocolServer.HasSubscriptions(dataType, securityId)

Há assinantes.

IsStubSubscription
protected abstract bool IsStubSubscription(TSubscription subscription)
result = baseProtocolServer.IsStubSubscription(subscription)

Verifique se a subscrição é um escrivão (titular de lugar).

Load
public override void Load(SettingsStorage storage)
baseProtocolServer.Load(storage)

Carregar as configurações.

storage
Configuração do armazenamento.
OnClearListenerState
protected abstract void OnClearListenerState()
baseProtocolServer.OnClearListenerState()

Limpar o estado de ouvinte específico do protocolo (stop outleners, etc.).

OnStartListeners
protected abstract void OnStartListeners(CancellationToken cancellationToken)
baseProtocolServer.OnStartListeners(cancellationToken)

Iniciar ouvintes específicos do protocolo (TCP, etc.). Adicionar tarefas a _backgroundTasks.

ProcessInMessage
protected abstract void ProcessInMessage(Message message, CancellationToken cancellationToken)
baseProtocolServer.ProcessInMessage(message, cancellationToken)

Processe uma mensagem recebida e route para clientes subscritos.

ProcessLogout
protected virtual void ProcessLogout(TClientSession session)
baseProtocolServer.ProcessLogout(session)

Processar o logout/desconexão do cliente.

RaiseNewOutMessage
protected void RaiseNewOutMessage(IMessageListenerSession session, Message message)
baseProtocolServer.RaiseNewOutMessage(session, message)

Escreva mensagem de saída para o canal.

RaiseSessionConnected
protected void RaiseSessionConnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionConnected(session)

Levantar o evento conectado à sessão.

RaiseSessionDisconnected
protected void RaiseSessionDisconnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionDisconnected(session)

Levantar o evento desconectado da sessão.

RemoveSubscription
public bool RemoveSubscription(ServerSubscription subscription)
result = baseProtocolServer.RemoveSubscription(subscription)

Remover assinatura.

subscription
Assinatura.

Retorna: se a assinatura foi encontrada, caso contrário .

Resume
public bool Resume(ServerSubscription subscription)
result = baseProtocolServer.Resume(subscription)

Retomar a subscrição.

subscription
Assinatura.

Retorna: se a assinatura foi encontrada, caso contrário .

Resume
public void Resume(IMessageListenerSession session)
baseProtocolServer.Resume(session)

Retomar sessão.

session
Sessão.
RunAsync
public IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>> RunAsync(CancellationToken cancellationToken)
result = baseProtocolServer.RunAsync(cancellationToken)

Execute o processamento de mensagens assync e retorne as mensagens de saída como IAsyncEnumerable. Abre o servidor no início e fecha no fim.

Save
public override void Save(SettingsStorage storage)
baseProtocolServer.Save(storage)

Gravar as definições.

storage
Configuração do armazenamento.
ScheduleSessionWork
protected abstract void ScheduleSessionWork(TClientSession session, ServerSubscription subscription, string requestId, Func<TClientSession, string, CancellationToken, ValueTask<bool>> handler)
baseProtocolServer.ScheduleSessionWork(session, subscription, requestId, handler)

Agendar o trabalho numa fila de saída de uma sessão de clientes.

SendInMessage
public virtual bool SendInMessage(Message message)
result = baseProtocolServer.SendInMessage(message)

Envie mensagem recebida para o servidor para processamento e encaminhamento para clientes.

StartServer
protected void StartServer(CancellationToken cancellationToken)
baseProtocolServer.StartServer(cancellationToken)

Iniciar o servidor: inicializar o estado, iniciar os ouvintes e as tarefas de fundo.

StopServer
protected void StopServer()
baseProtocolServer.StopServer()

Parar o servidor: cancelar tarefas, canais completos, estado limpo.

Suspend
public void Suspend(IMessageListenerSession session)
baseProtocolServer.Suspend(session)

Suspenda a sessão.

session
Sessão.
Suspend
public bool Suspend(ServerSubscription subscription)
result = baseProtocolServer.Suspend(subscription)

Suspenda a subscrição.

subscription
Assinatura.

Retorna: se a assinatura foi encontrada, caso contrário .

Eventos

SessionConnected
public event Action<IMessageListenerSession> SessionConnected
baseProtocolServer.SessionConnected += handler

Evento conectado à sessão.

SessionDisconnected
public event Action<IMessageListenerSession> SessionDisconnected
baseProtocolServer.SessionDisconnected += handler

O evento da sessão foi desligado.

StateChanged
public event Action StateChanged
baseProtocolServer.StateChanged += handler

Evento de mudança de estado.

SubscriptionChanged
public event Action<ServerSubscription> SubscriptionChanged
baseProtocolServer.SubscriptionChanged += handler

A subscrição do cliente mudou o evento.

Campos

_backgroundTasks
protected readonly List<Task> _backgroundTasks
value = baseProtocolServer._backgroundTasks

Tarefas de fundo (aceitar clientes, mensagens de processo, etc.).

_cancellationRequests
protected readonly SynchronizedSet<long> _cancellationRequests
value = baseProtocolServer._cancellationRequests

Pendente cancelamento pedido IDs de transação.

_changedSubscriptions
protected readonly SynchronizedSet<ServerSubscription> _changedSubscriptions
value = baseProtocolServer._changedSubscriptions

Assinaturas alteradas até à notificação.

_clientSessions
protected readonly CachedSynchronizedDictionary<string, CachedSynchronizedList<TClientSession>> _clientSessions
value = baseProtocolServer._clientSessions

Sessões de clientes agrupadas por chave de sessão (e.g. SenderCompId).

_incomingMessages
protected readonly Channel<Message> _incomingMessages
value = baseProtocolServer._incomingMessages

Canal de mensagens a chegar.

_outgoingMessages
protected readonly Channel<ValueTuple<IMessageListenerSession, Message>> _outgoingMessages
value = baseProtocolServer._outgoingMessages

Canal de mensagens de saída (sessão + pares de mensagens).

_subscriptions
protected readonly SubscriptionHolder<TSubscription, TClientSession> _subscriptions
value = baseProtocolServer._subscriptions

Titular da assinatura.